// 在 utils/request.js中专门封装 axios
import axios from 'axios'
import store from '@/store/'
import router from '@/router/'
const request = axios.create({
  baseURL: 'http://www.liulongbin.top:3008'
})

// 今后,我们的项目中,都使用 request 啦发起 Ajax的请求
export default request

// 添加全局拦截器
// 请求拦截器
// 注意: 吧官方示例代码粘贴过来以后,一定要把前面的 axios 替换为自己的 request对象
// 核心注意点: 用谁发请求, 就把拦截器挂载给谁
request.interceptors.request.use(
  function (config) {
    // Do something before request is sent
    // 在这里,全局统一添加token 认证

    if (config.url.startsWith('/my')) {
      config.headers.Authorization = store.state.user.token
    }
    console.log(config)
    return config
  },

  error => {
    // Do something with request error
    return Promise.reject(error)
  }
)
// 响应拦截器
// axios.interceptors.response.use
// 用request发的请求要把axios 换成request
request.interceptors.response.use(
  response => {
    // Do something before response is sent
    // 200的错放上面
    return response
  },
  error => {
    // Do something with response error
    // 不是2xx 开头的响应状态码放下面 比如(401,500,400)
    console.dir(error)
    if (error.response.status === 401) {
      // 证明token过期,发送给服务器的是一个 无效的 token
      // 1.清空 vuex中的token 和用户信息
      store.commit('user/updateToken', '')
      store.commit('user/updateUser', {})
      // 2.跳转到登录页面
      // this.$router.push('/login')
      // 在js文件里不能用this, 引入router
      router.push('/login')
    }
    return Promise.reject(error)
  }
)
